package com.imooc.utils;

import com.imooc.exception.GraceException;
import com.imooc.result.ResponseStatusEnum;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.RandomUtils;


/**
 * @author liansen
 * @create 02-14-22:58
 */
@Slf4j
public class SMSUtilsRetry {

    //假装并且模拟本方法为发送短信, 如果返回true则表示正常,否则不正常,异常则重试
//    public static boolean sendSMS(){
//
//        //生成一个0-4之间的随机数
//        int num = RandomUtils.nextInt(0, 4);
//        log.info("随机数: " + num);
//
//        switch (num) {
//            case 0: {
//                //模拟参数异常
//                throw new IllegalArgumentException("参数有误异常");
//            }
//            case 1: {
//                //1为正常返回数据
//                return true;
//            }
//            case 2: {
//                //模拟数组角标越界异常
//                throw new ArrayIndexOutOfBoundsException("数组角标越界异常");
//            }
//            case 3: {
//                //调用正常但是第三方返回的参数不对, 针对false自行处理
//                //第三方sdk一般会返回不同的状态码，对照状态码列表可以自行做额外的处理
//                return false;
//            }
//        }
//        //其他数字则触发最终的空指针异常
//        throw new NullPointerException("空指针异常");
//    }

    public static String sendSMSCode(){

        //生成一个0到3之间的随机整数
        int num = RandomUtils.nextInt(0, 3);
        switch(num) {
            case 0: {
                //生成6位数随机验证码
                return (int) ((Math.random()*9+1) * 100000) + "";
            }

            case 1: {
                System.out.println("1");
                break;
            }

            case 2: {
                System.out.println("2");
                break;
            }

            case 3: {
                System.out.println("3");
                break;
            }
        }
        //break跳出swirch循环后执行自定义异常，就不会再走下面的return了;
        GraceException.display(ResponseStatusEnum.SMS_TEMP_ERROR);
        return "temp";
    }
}